using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.ComponentModel;

namespace GameEditor.Common.Designer
{
    public class ControlPositionContext
    {
        private Control designerControl;

        public Control Control
        {
            get { return designerControl; }
            set { designerControl = value; }
        }
        private Point oldPosition;

        public Point OldPosition
        {
            get { return oldPosition; }
            set { oldPosition = value; }
        }
        private Point newPosition;

        public Point NewPosition
        {
            get { return newPosition; }
            set { newPosition = value; }
        }
        public ControlPositionContext()
        {
        }
    }
    public class ControlSizeContext
    {
        private Control designerControl;

        public Control Control
        {
            get { return designerControl; }
            set { designerControl = value; }
        }
        private Size oldSize;

        public Size OldSize
        {
            get { return oldSize; }
            set { oldSize = value; }
        }
        private Size newSize;

        public Size NewSize
        {
            get { return newSize; }
            set { newSize = value; }
        }
        public ControlSizeContext()
        {
        }
    }
    public delegate void ControlPositionChangedEventHandler(object sender, ControlPositionChangedEventArgs e);

    public class ControlPositionChangedEventArgs : EventArgs
    {
        private ControlPositionContext[] contexts;

        public ControlPositionContext[] Contexts
        {
            get { return contexts; }
        }
        public ControlPositionChangedEventArgs(ControlPositionContext[] contexts)
        {
            this.contexts = contexts;
        }
    }
    public delegate void ControlSizeChangedEventHandler(object sender,ControlSizeChangedEventArgs e);

    public class ControlSizeChangedEventArgs : EventArgs
    {
        private ControlSizeContext[] contexts;

        public ControlSizeContext[] Contexts
        {
            get { return contexts; }
        }
        public ControlSizeChangedEventArgs(ControlSizeContext[] contexts)
        {
            this.contexts = contexts;
        }
    }
    public delegate void ControlMouseEventHandler(object sender, ControlMouseEventArgs e);

    public class ControlMouseEventArgs : System.Windows.Forms.MouseEventArgs
    {
        private Control control;

        public Control Control
        {
            get { return control; }
        }
        public ControlMouseEventArgs(Control control, System.Windows.Forms.MouseEventArgs e)
            :base(e.Button,e.Clicks,e.X,e.Y,e.Delta)
        {
            this.control = control;            
        }

    }

}
